邮箱名字
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
git config -l(列出所有)
初始化仓库
git init
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
提交更改、比对
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。可以使用gitk或者git gui来比对。
git log查看日志。
git add =》 git commit
版本回退
git log
git reset --hard “(log上面的每一个对应的版本号)” 即可恢复到对应版本
当不想进行回退:
-.命令还在直接使用 git reset --hard 对应的版本id
-.命令窗口已经关了:使用git reflog(该命令会记录你的每一次操作),获取到版本id进行回退。
撤销修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
用命令`git reset HEAD file`可以把暂存区的修改撤销掉(unstage),重新放回工作区
具体场景参考:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
rm filename
两种情况:
需要删除=》则git rm filename =>git commit -m "delete"
误删除=》git checkout -- filename
分支合并
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
注意
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
没有进行add 直接commit是不会保存到库里面的。
远程仓库-》删除
先删后加
git remote rm origin
git remote add origin git@github.com:Liutos/foobar.git
远程仓库-》创建
在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
远程仓库-》添加远程库
git remote add origin git@github.com:michaelliao/learngit.git
提交使用:git push origin master
远程仓库-》克隆
git clone git@github.com:michaelliao/gitskills.git
bug分支
git stash 储藏当前的工作
到新的分支进行补给修复,修复完成提交切换到主分支进行合并。删除bug分区。
接下来是恢复:第一、git stash apply 。git stash drop。
第二,git stash pop。
多个remote
git commit -m "Change repo." # 先把所有为保存的修改打包为一个commit
git remote remove origin # 删掉原来git源
git remote add origin [YOUR NEW .GIT URL] # 将新源地址写入本地版本库配置文件
git push -u origin master # 提交所有代码
或者:
git remote set-url origin remote_git_address
问题解决
git clone https://android.googlesource.com/kernel/common.git
Cloning into common...
warning: remote HEAD refers to nonexistent ref, unable to checkout.
改用:
git clone http://android.googlesource.com/kernel/common.git
git branch -a
git checkout remotes/origin/android-3.0
OK.
忽略文件不起作用
git rm --cache
原因是文件已经被追踪.
删除远程分支
git branch -a
git push origin --delete <branchName>
删除tag这么用:
git push origin --delete tag <tagname>
也可以这样:
git branch -r -d origin/branch-name
git push origin :branch-name
*.a
# 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt