Git常用命令
Git是一款分布式版本控制系统,由Linux之父Linus设计完成。Git的流行从github的火热程度可见一斑。
创建本地仓库
从Git进入某个恰当的目录下,执行git init命令,将该目录初始化为一个空的仓库。
git add <file>添加文件,可反复多次使用,添加多个文件;git rm <file>删除文件;git commit将添加的文件提交到仓库,通常加-m "message for commit",进行说明;git status给出当前添加与提交的状态,经常会用到;git diff <file>查看文件<file>被做了哪些修改;
版本穿梭
Git可以很方便的帮助开发者回退或者前进项目版本。
git log查看提交历史,加--pretty=oneline将提交信息压缩为一行显示,加--graph可以查看分支合并图,实际上,使用gitk命令查看更为直观全面;git reflog查看命令历史,可以查找到要回到的未来commit id;git reset --hard commid_id可控制版本来回穿梭,HEAD指当前版本,HEAD^和HEAD^^分别为上一版本和上上一版本,而上10个版本为HEAD~10;git checkout -- <file>放弃对为添加的文件的修改;git reset HEAD <file>放弃对已添加、但未提交的文件的修改;- 若文件修改已提交,欲撤销提交,可以
git reset --hard commid_id;
远程仓库
通过ssh-keygen -t rsa -C "email@example.com"生成主机的秘钥,并将公钥(id_rsa.pub)拷贝到远端的KEY里,这样就具备了pull和push远端代码的权限。
- 关联一个远程仓库
git remote add origin git@server_name:path/repo_name.git,这里的git@server_name:path/repo_name.git还可以为https://server_name/path/repo_name.git,只不过采用不同的协议; - 首次推送
git push -u origin master,后续均git push origin master; - 克隆远程仓库
git clone git@server_name:path/repo_name.git;
分支管理
Git可以快速而方便的在各分支间自由切换与合并。
git branch查看分支;git branch <branch_name>创建新分支<branch_name>;git branch -d <branch_name>删除<branch_name>分支;git checkout <branch_name>将当前工作切换到<branch_name>分支上;git checkout -b <branch_name>创建新分支、并切换到该分支上;git merge <branch_name>将<branch_name>分支合并到当前分支,该合并采用fast-forward,加--no-ff则会禁用fast-forward合并,这时将会生成一个commit:git merge --no-ff -m "message for merge" <branch_name>;- 当手头工作还未完成,但必须终止当前工作转而进行其他工作时,可执行
git stash保留当前工作现场,然后git stash pop恢复现场; - 丢弃一个没有被合并过的分支,可以通过
git branch -D <branch_name>强行删除; - 查看远程库信息,使用
git remote -v; - 本地新建的分支如果不推送到远程,对其他人就是不可见的,从本地推送分支,使用
git push origin <branch-name>,如果推送失败,先用git pull抓取远程的最新提交; - 删除远程分支,首先删除本地分支
git branch -d <branch_name>,然后执行git push origin :<branch_name>将远程仓库对应的分支删除; - 在本地创建和远程分支对应的分支,使用
git checkout -b <branch_name> origin/<branch-name>,本地和远程分支的名称最好一致; - 建立本地分支和远程分支的关联,使用
git branch --set-upstream <branch_name> origin/<branch_name>; - 从远程抓取分支,使用
git pull,如果有冲突,要先处理冲突,合并master分支前,请先拉取最新的代码。
标签管理
在Git中,标签通常用来标识版本信息,它与某一时刻的commit id相关联。
git tag <tagname>用于创建一个新的标签,默认在HEAD上,也可以指定commit id:git tag <tagname> commit_id;git tag -a <tagname> -m "message for tag"用于指定标签信息,git tag -s <tagname> -m "message for tag"用于PGP签名标签;git tag查看所有标签;git show <tagname>查看该标签的详细信息;git push origin <tagname>用于将本地<tagname>标签推送到远程仓库,git push origin --tags将本地所有标签推送到远程仓库;git tag -d <tagname>在本地删除标签;- 若某一标签已
push到远程仓库,则需要首先在本地删除该标签,然后,执行git push origin :refs/tags/<tagname>删除远程标签;
反悔
撤回已push到远程仓库的提交
假设当前工作在dev分支上,刚刚push了一次更改到远程仓库,但发现提交不符合要求,需要撤回,怎么办?
说明:此方法仅适用于当前无其他人提交更新。
git reset --hard <版本号>
git push origin dev --force
修改已push到远程仓库的日志
假设当前工作在dev分支上,刚刚提交了一条带有 this is a wrong message 的日志,并且 push 到了远程仓库,但是 push 后却发现日志写错了,应当为 this is a right message ,怎么办呢?抓紧!
修改日志
git commit --amend会弹出刚刚
push上去的那条错误的日志,修改成正确的,保存。
如vim一样执行插入和保存。强制提交
git push --force-with-lease origin dev
亲测搞定!
请确保没有其他人在你要修改的提交后做了提交。

294

被折叠的 条评论
为什么被折叠?



