Git学习笔记😷
git配置
使用
git config
进行配置(配置文件三种不同的存储位置)用户信息
1
2git config --global user.name "haitao"
git config --global user.email "haitao.hjc@gmail.com"检查配置信息
1
2git config --list
git config user.name获取帮助
1
2
3
4
5git help <verb>
git <verb> --help
man git-<verb>
//获取config的帮助手册
git help config
git基础
获取git仓库
1
2git init
git clone检查当前文件状态
1
2git status
git status test.txt跟踪新文件
1
2git add README
git add *暂存已修改文件
1
2git status
git add modified.md状态简览
1
2
3
4
5
6
7
8
9
10
11git status --short
//或者
git status -s
//输出示例
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt注:
'??'
表示新添加的跟踪文件;
'A '
表示新添加到暂存区中的文件;
' M'
出现在右边的M表示该文件被修改了但是还没放入暂存区,比如commit之后进行的修改;
'AM'
表示添加暂存区之后被修改了,比如哦add之后进行的修改;
'M '
出现在左边的M表示该文件被修改了并放入了暂存区,比如在commit之后进行修改并且将修改保存到暂存区;
'MM'
这种情况出现在commit之后进行修改,并将修改保存到暂存区,然后再对文件进行修改。
' D'
表示保存到暂存区或者commit之后的文件从磁盘被删除。
'R '
表示commit之后,文件被renamed。忽略文件
一般创建一个.gitignore
的文件,列出要忽略的文件模式。具体规则无需记忆,GitHub上有一个十分详细的针对数十种语言的.gitignore文件列表。
- 查看已暂存和未暂存的修改
git status
显示了哪些文件被修改了,而git diff
则通过文件补丁的格式显示具体哪些行发生了改变。
如果要查看已暂存的将要添加到下次提交里的内容,可以使用git diff --cached
或者git diff --staged
,二者效果相同。
提交更新
1
git commit -m "message"
跳过使用暂存区域
git commit加上-a选项。
移除文件
确切的说,是从暂存区移除文件,然后提交。依次执行如下命令:1
2
3rm -rf test.md
git rm -rf test.md
git commit -m "del"还有一种情况是把文件保留在磁盘中,但是从暂存区中删除,比如有时候不小心将很大的日志文件添加到暂存区。
1
git rm --cached output.log
移动文件
对于暂存区中的文件可以使用1
git mv file_from file_to
查看历史提交记录
1
2
3
4
5
6git log
//最近的更新排在最上面。
//还有其它,比如:
git log -p -2
git log --stat除此之外,git log还有很多格式化提交记录信息的方式。比如可以限制输出长度或者限制在一定时间范围内。
撤销操作
情景一:有时我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了,这是可以用:1
git commit --amend
例如:你提交后发现忘记了暂存某些需要的修改,可以这样操作:
1
2
3git commit -m "init"
git add forgotten_file
git commit --amend执行最后一条命令后会弹出编辑器,然后在里面修改提交信息。编辑后保存会覆盖原来的提交信息。最终只会有一个提交记录。
取消暂存的文件
1
git reset HEAD <file>
撤销对文件的修改
如果不想保留对文件的修改的,将他还原成上次提交时的样子。(针对修改后还未保存到暂存区的文件)
1
git checkout -- <file>
远程仓库
查看远程仓库
1
2
3git remote
//或者
git remote -v添加远程仓库
1
2
3git remote add <shortname> <url>
//eg
git remote add origin https://github.com/lihtao/test.git从远程仓库中抓取与拉取
1
git fetch [remote-name]
这个命令将会从远程分支拉取所有你还没有的数据(包括所有分支)。所以
git fetch
会抓取上一次抓取之后新推送的所有工作。但是并不会自动合并或修改你当前的工作,必须进行手动合并。
而git pull
这个命令则是自动抓取然后合并远程分支到当前分支。另外,如果你clone一个仓库,会自动将其添加为远程仓库并默认以origin
为简写。推送到远程仓库
1
git push origin master
查看某个远程仓库
1
git remote show origin
这个命令列出了当你在特定的分支上执行
git push
会自动地推送到哪一个远程分支。它也同样地列出了哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行git pull
时哪些分支会自动合并。远程仓库地移除与重命名
如果想要重命名引用的名字可以运行git remote rename取修改一个远程仓库的简写名。例如,将origin重命名为paul:
1
git remote rename origin paul
如果要从服务器上移除一个远程仓库:
1
git remote rm paul
参考:https://git-scm.com/book/en/v2