ssh-keygen -t rsa -C “2873126657@qq.com“ // click the enter three times // Then copy the "id_rsa.pub" contents to your github account to add the ssh key(maybe new SSH key)
ssh -T git@github.com // test the connect success or not
git init // Generate .git directory(default info) git add . // add all files or xxx(one file) git commit -m 'this is the first commit' // commit and write the description(important)
git push -u origin master // push to remote // -u: "git push" replace "git push origin master" // now we publish the process that local to remote~
git clone URL // Clone it to our computer from URL // eg: git clone git@github.com:Liuhongwei3/xxx.git // 如果想在克隆远程仓库的时候,自定义本地仓库的名字,可通过额外的参数指定新的目录名: git clone https://github.com/libgit2/libgit2 mylibgit // 这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit
// Sometimes maybe use pull(拉取并合并) git pull origin master // origin master 分支
git status // show status (-s short) git diff // show difference
git push origin --delete <tagname> // delete the remote tag directly
git reset
git reset HEAD <file>... // 取消暂存某个文件
git mv—rename
$ git mv README.md README $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README // same as the following mv README.md README git rm README.md git add README
git remote
git remote // show remote branch git remote -v // show remote branch more infos
git tag [-l/--list] // show the tag list git tag v1.5.0 // make a tag: v1.5.0---light git tag -a v1.4-tadm -m "my version 1.4" // full git tag -a v1.2 9fceb02 // 给提交历史中的某个校验和(complete or parital)打标签 git tag -d v1.4-tadm // delete the specified local tag git push origin :refs/tags/v1.4-tadm // 将冒号前面的空值推送到远程标签名,从而高效地删除它
git push origin --delete <tagname> // delete the remote tag directly
git show v1.2 // show the tag infos git push origin v1.5 // push v1.5 to remote git push origin --tags // push all tags to remote
light
轻量标签只是某个特定提交的引用,本质上是将提交校验和存储到一个文件中——没有保存任何其他信息.
full
附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息.
git status && git diff
git status // show files status // 凡是被 'git add .' 添加的文件都会被git跟踪 git status -s M README MM Rakefile A lib/git.rb M lib/simplegit.rb ?? LICENSE.txt 新添加的未跟踪文件前面有 ?? 标记, 新添加到暂存区中的文件前面有 A 标记, 修改过的文件前面有 M 标记。 // 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。上面的状态报告显示: README 文件在工作区已修改但尚未暂存,而lib/simplegit.rb 文件已修改且已暂存。 Rakefile 文件已修,暂存后又作了修改,因此该文件的修改中既有已暂存的部分,又有未暂存的部分。
git checkout test // 切换到 test 分支 // 此时 HEAD 指针指向 test 分支,此时对某些文件做一些修改并提交,则会使得 test 分支向前移动,但是此时 master 分支仍处于修改前的状态 git checkout master // 此时发生了两件事:一是使 HEAD 指回 master 分支,二是将工作目录恢复成 master 分支所指向的快照内容,此时项目就处于修改前的状态。这个时候我们再次修改文件时,就会产生分叉,因为此时是在另一个分支做了些许修改;也就是说我们这两次的修改是不会相互影响:接着就可以在不同分支间不断地来回切换和工作,并在时机成熟时将它们合并起来。 git log --oneline --decorate --graph --all // 查看提交历史、各个分支的指向以及项目的分支分叉情况 * c2b9e (HEAD, master) made other changes | * 87ab2 (testing) made a change |/ * f30ab add feature #32 - ability to add new formats to the