SHA-1校验和(也叫hash,哈希)这里提一句,在git中,文件的存储是通过文件内容计算哈希值(40位十六进制)进行索引的,所以不可能在git不知情的情况下修改文件,确保记录完备,提交更改会产生哈希值记录此次更改。
git log其他常用命令:
个人觉得git log --pretty=format非常有趣,可以很简洁展示历史,举例来说,我们在终端运行git log --pretty=format:"%h %s",有如下结果:
$ git log --pretty=format:"%h %s" a9b674c add some info 2ae267c fix one error 405cd1b add hello everyone edb1d60 first commit第一项是简短哈希,第二项是提交说明,非常直观。常见的format如下。
5.3.4 git rm和git mvgit rm命令用来删除文件,对文件不进行版本管理。git mv命令可以对文件重命名和移动。
使用git rm:
通过git rm后,可以在playground文件夹中看到README.md文件已经不见了。
常用的git rm命令有:
使用git mv(先在playground文件夹新建dd文件夹):
$ git mv hello.py dd/hello.py $ git status On branch master Your branch is ahead of 'origin/master' by 3 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: hello.py -> dd/hello.py $ git mv dd/hello.py dd/hello.txt $ git status On branch master Your branch is ahead of 'origin/master' by 3 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: hello.py -> dd/hello.txt $ git commit -m "rename hello.py -> hello.txt"git mv相当于以下三条命令:
$ mv README.md README $ git rm README.md $ git add README当然,能有简洁的命令当然用简洁的好!
5.3.5 远程命令这一节涉及到分支,建议跳过这一节,看完分支再过来。
git clone是用来克隆远程仓库到本地;
git remote是用来添加远程仓库,并为远程仓库添加名字缩写;
git push是上传本地仓库到远程仓库中。
git fetch是将远程仓库的更新下载到本地仓库中
git pull是将远程仓库的更新下载到本地仓库中,并进行合并
克隆可以通过https url下载或者ssh url,命令很简单
$ git clone url 5.3.5.2 git remotegit remote add origin git@github.com:FangYang970206/playground.git是用来添加远程仓库的信息到本地,并用一个简短的引用来表示url,命令具体是git remote add <shortname> <url>,也就是我们可以在接下来的git操作中,用origin来代表整个url。
常用命令:
git push -u origin master是将本地代码上传到github服务器,这句话要拆成两部分解释,第一部分是git push,是上传命令,那上传到那里呢?第二部分-u origin master则是指定上传位置,上传到origin的master分支,这里的-u是设定默认主机,也就是下次你要是也上传到origin的master分支,就直接git push就可以了。
其他命令:
如果想把本地的foo分支推送到远程仓库中的bar分支,则可用这个命令进行指定。
5.3.5.4 git fetch