再不学git我们就老了

作者: ccccccal | 来源:发表于2017-09-20 18:46 被阅读200次

    git 配置

    git config —global user.name "ALguojian"

    git config —global user.email "jzhszy@foxmail.com"

    git常用命令

    • git branch -m devel develop (重命名本地分支名字,命名之后,直接提交到远程,然后需要将本地和远程分支同步一次)

    • git branch --set-upstream-to=origin/develop (同步本地和远程连接)

    • git rm -r –cached . (删除在git管理中文件的缓存)

    • mkdir test (创建文件夹test)

    • cd test (切换到test目录)

    • touch a.md (新建a.md文件)

    • git init (初始化git仓库)默认在master分支

    • git status(查看状态)

    • git add (缓存,待提交)

    • git add . (添加所有文件)

    • git add -u (将文件的修改、文件的删除,添加到暂存区)

    • git add -A (将文件的修改,文件的删除,文件的新建,添加到暂存区)

    • git rm --cached (删除缓存)

    • git fetch origin (自动获取更新远程分支)

    • git commit (提交) git commit -m "第一次提交"

    • git commit -am "提交信息" (所有的改动都更新到缓存区并提交,相当于git add .和git commit -m 的合并)

    • git log (commit记录)

    • git branch 分支(查看本地分支)

    • git branch -r (查看远程分支列表)

    • git checkout develop origin/develop (远程的 develop 分支迁到本地)

    • git checkout -b develop origin/develop (把远程分支迁到本地顺便切换到该分支)

    • git branch a (创建分支 a)

    • git checkout a (切换到 a 分支)

    • git checkout -b a (创建并切换到 a分支)

    • git merge a(合并分支 a 到主分支)合并之前先切换到master分支(在master执行)

    • git rebase a (合并分支a)(在a分支处理)

    • git rebase -i <commitID>(删去那些无关紧要的提交,整理提交记录)

    • git rebase side another 合并another分支到side分支上,并且提交记录在最前端

    • git commit --amend -m "这是新的提交日志"修改上次提交日志

    merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端。具体可以查看下面的说法
    https://www.zhihu.com/question/36509119/answer/67828312
    http://www.cnblogs.com/kidsitcn/p/5339382.html
    http://blog.csdn.net/fybon/article/details/52460516

    • git branch -d a (删除分支 a )
    • git branch -D a (强制删除分支a,针对于 a 有代码没有合并到master,git branch -d a 删除不了)
    • git push --delete origin devloper (删除远程分支)
    • git tag v1.0(建立版本1.0,查看历史版本)
    • git checkout v1.0 (切换到1.0版本)
    • git stash (把当前分支所有没有commit的代码暂时保存起来(执行了add 也无所谓))
    • git stash list (查看暂存区的记录)
    • git stash apply (回到暂存之前)
    • git stash drop (回来之后建议删除stash记录)
    • git stash pop (回到暂存之前,并删除记录)
    • git stash clear

    是清空所有暂存区的记录,drop 是只删除一条,当然后面可以跟 stash_id 参数来删除指
    定的某条记录,不跟参数就是删除最近的,而 clear 是清空。

    • git rebase -i HEAD~4 (改变之前4次提交的顺序)
    • git reset HEAD~a (回退到某一个版本)(reset只在本地使用,远程推送建议使用revert会再提交一个新的纪录,该记录引入更改--这些更改刚好就是用来撤销上次提交的,回到上次提交之前的状态)
    • git reset HEAD^ (回退到上一个版本)
    • git reset HEAD^^ (回退到上上个版本)
    • git reflog (回退错了,前进)
    • git revert HEAD(撤销上次提交,用于远程推送)

    添加SSH

    在git bash 输入 ssh-keygen -t rsa 生成文件,github创建新的SSH并填入,之后输入 ssh -T git@github.com 测试是否添加成功

    推送或者下拉(先pull再push)

    git push origin master 推送

    git pull origin master 下拉

    git pull origin master --allow-unrelated-histories
    git push -f origin master 更新

    git clone git@github.com:ALguojian/test.git下载github上面的项目到本地

    关联giuhub仓库

    git remote add origin https://github.com/ALguojian/git_study.git

    origin就是仓库名字,建议名字和远程仓库一样,较易管理

    git remote -v 查看该项目有哪些仓库

    git push origin master 提交代码可以到 master 分支,或者其他分支

    git remote rm "origin" 删除origin远程仓库

    alias 配置 简短参数

    git config --global alias.c checkout
    git config --global alias.cm commit
    git config --global alias.st status
    git config --global alias.br branch

    git config -l 查看所有配置

    补充,移动到其他提交记录,即HEAD的指向

    git checkout a 不仅用于切换分支还可用于切换提交记录,此时a代表提交记录的哈希值(很长),不过只需要前几位即可

    • 使用 ^ 向上移动 1 个提交记录
    • 使用~<num> 向上移动多个提交记录,如 ~3

    ^后面加数字标识回到父类其他分支用法:
    git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2

    并且还支持链式操作:
    git checkout HEAD~^2~2

    所以master^相当于“master 的父节点”。master^^master 的第二个父节点,也可以将 HEAD 作为相对引用的参照,可以一直使用 HEAD^向上移动

    git branch -f master HEAD~3 将 master 分支强制指向 HEAD 的第 3 级父提交(强行改变分支所处位置)

    git cherry-pick C2 C3 C4(改变提交记录与主分支,C2是提交的记录的哈希值)

    git fetch 同步绑定的仓库(一般是其他分支)

    git pull 就是 git fetchgit merge <just-fetched-branch> 的缩写!

    git fakeTeamwork foo 3模拟远程提交,可以指定分支和次数

    相关文章

      网友评论

        本文标题:再不学git我们就老了

        本文链接:https://www.haomeiwen.com/subject/nfoosxtx.html