基本操作:
git init
:初始化一个Git仓库,会产生.git文件夹;
git add <file>
:添加文件到暂存区;
git status
:查寻工作区与暂存区的区别,红色代表文件还未添加到暂存区,绿色代表已添加;
git commit -m "describtion"
:提交,”“里放本次提交的说明信息。
辅助查寻:
git diff:如果git status显示有文件被修改过(红色),用git diff可以查看修改内容。
撤销修改:
git checkout -- file
:应用场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时(没有–,就变成了“切换到另一个分支”的命令);
git reset HEAD file
:应用场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改(此命令只能回到应用场景1);
git reset --hard commit_id
:应用场景3:已经提交了不合适的修改到版本库时,没有推送到远程库,想要撤销本次提交(HEAD指向的版本就是当前版本,HEAD~1指向的版本就是上一个版本)。
另外两个辅助查寻命令:
git log
:查看提交历史,确定回退到版本(git config --global alias.lol "log --oneline --decorate --graph --all"
或者git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
:给log起一下别名);
git reflog
:查看命令历史,确定回退到版本
远程仓库创建:
$ ssh-keygen -t rsa -C "email"
:创建SSH Key,”“里面放自己的邮箱地址.把id_rsa.pub
中的信息,即公钥配置到远程仓库中(在github中创建远程仓库),
id_rsa.pub
存在于用户主目录下的.ssh目录中。
添加远程仓库:
git remote add origin git@github.com:username/repo-name.git
:记得把username/repo-name这此信息都换成自己的。origin:代远程库的名字,可修改
git push -u origin master
:把本地库的所有内容推送到远程库:(第一次);
git push origin master
:把本地库的所有内容推送到远程库上
从远程库下载:
git clone git@github.com:username/repo-name.git
:记得把username/repo-name这此信息都换成自己的,默认下载到本地git文件夹中
创建与合并分支:
git checkout -b <name>
:创建+切换分支,等价于git branch <name>+git checkout <name>
;
git merge <name>
:合并某分支到当前分支,当Git无法自动合并分支时,需手动解决冲突,把冲突的文件进行修改再次提交,–no-ff参数用普通模式合并,合并后的历史有分支(也可用 -m “”记录提交内容说明),能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
git branch -d <name>
:删除分支,删除后可用git branch:查看分支,如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除
Bug分支:
git stash
:将当前工作区保存起来.一般修复bug时使用,创建新的bug分支进行修复,然后合并,最后删除
git stash pop
:回到工作区。
多人操作时注意事项:
git remote -v
:查看远程库信息;
git push origin branch-name
:上传–从本地推送分支,如果推送失败,先用git pull抓取远程的新提交;
git branch --set-upstream branch-name origin/branch-name
;上传–指定本地分支和远程分支的关联(使用git pull 报错Could not resolve hostname server-name时使用)
git pull
:上传–抓取远程的新提交,接着修改冲突文件再次上传;
git fetch origin
:下载—在本地创建和远程分支对应的分支报错时使用,然后再次下载分支信息
git checkout -b branch-name origin/branch-name
:下载–在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致;
忽略特殊文件
.gitignore
:在里面输入不用上传的文件
git add -f file
:-f代表强制上传
git check-ignore -v file
:检查文件被忽略的原因