git管理github&&git 常用命令

一、git使用前的配置

1,git设置姓名和邮箱(与github账号无关)即提交代码时的用户信息

$ git config --global user.name "Cav4ever"

$ git config --global user.email "303146950@qq.com"

二、git管理github代码

1,生成秘钥(利用git向github push代码时必须,邮箱为github注册邮箱?不必)

$ ssh-keygen -t rsa -C "303146950@qq.com" 三次回车默认即可

2,找到生成的公钥id_rsa.pub拷贝内容,github头像-->设置-->ssh key

3,克隆代码 $ git clone git@github.com:Cav4ever/Makefile.git

4,修改 vim test.txt, 添加 git add test.txt,提交 git commit -m "commit the test file",同步到github,git push

三、Git 获取指定历史版本源代码

1,$ git clone git@github.com:Cav4ever/Makefile.git

2,进入工程目录,查看并拷贝需要的历史版本哈希值$ git log

$ git log --pretty=oneline --abbrev-commit

3,$ git checkout 75a3a1d7720f52000e1c05f186cde8d72ec5ce40

此时本地代码即可切回所需要的历史版本

四、比较两个版本的变动

1,git diff 版本哈希号码1 版本哈希号码2

五、将本地仓库和远程仓库建立连接(用于最初本地和github都空时同步代码)

1,通过git init命令把当前目录变为可以Git管理的仓库,经过这个操作,当前目录下多了一个.git的目录

2,编写ignore文件:不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore,该文件需要提交

3,将本地仓库和远程仓库建立连接:$ git remote add origin git@github.com:Cav4ever/Makefile.git(origin 是默认的远程版本库名称)

3,修改 添加 提交 同步push

六、git其他常用命令

查看当前没有add 的内容修改$ git diff

查看已经add 没有commit 的改动$ git diff --cached

查看当前没有add和commit的改动: git diff HEAD 或者 git status

比较两个版本号码的src 文件夹的差异:git diff 版本号码1 版本号码2 src

查看配置信息:$ git config --list

添加所有修改的和新添加的 $ git add . 或 $ git add -A

查看已有分支:git branch -a

clone相应的分支:git clone -b 分支名 || git clone --branch 分支名

git 强制放弃本地修改(新增、删除文件):git checkout . && git clean -df

git checkout . //放弃本地修改,没有add的可以回到未修改前版本

git clean是从工作目录中移除没有track的文件.-d表示同时移除目录,-f表示force

从已经克隆下来的代码里用git指令显示其url地址可以使用git remote -v

重命名要clone的文件夹名:$ git clone git@github.com:Cav4ever/Makefile.git  新文件夹名(缺省则为原始的Makefile)

·  git add -A  提交所有变化

·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

·  git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

文件直接修改,添加,删除后,切换分支前如果没有commit,这些变换在切换后的分支中仍然存在,相当于在切换后的分支里做了这些修改,commit后再切分支,变化不可见。如果再add后commit前切分支,则相当于在切换后的分支里做了add,即工作区、暂存区对所有分支是全局的,公用的。

git log显示的是当前分支从无到有的整个过程,即假如该分支是在别的分支基础上新建的,则之前的那段历史也会被show出来。

切换分支前,可以使用git stash把当前工作现场“储藏”起来,等以后恢复现场后继续工作;

如何恢复现场呢?

git stash list 

git stash apply stash@{0}

恢复后,stash内容并不删除,你需要用git stash drop来删除

另一种方式是用git stash pop,恢复的同时把stash内容也删了

git merge --no-ff -m "merge with no-ff" dev(Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息)

git tag  //查看tag

git log命令的同时显示tag信息

git log --decorate=full

---------------------------------------------------------------------------------------------------------------

tag 管理

创建tag:$ git tag v1.0(tag名)

查看tag信息(commit id等):$ git show v1.0

创建带有说明的tag:$ git tag -a v1.1 -m "the 1.1 tag"

删除tag:$ git tag -d v1.1

推送tag到远程:$ git push origin v1.0

一次推送所有未推送的tag:$ git push origin  --tags

删除远程tag:$ git tag -d v1.1 && git push origin :refs/tags/v1.1

如果有tag和branch同名,git checkout 会切到branch,想切到tag可以:$ git checkout tags/v1.0
应避免tag和branch同名

-------------------------------------------------------------------------------------------------------------------

分支管理

创建branch:$ git checkout -b branch1(相当于git branch branch1 && git checkout branch1)

删除分支:$ git branch -d branch1(不能在当前分支删除当前分支)

查看本地分支:$ git branch

查看所有分支:$ git branch -a(-v可查看更多信息)

推送分支到远程:$ git push origin branch1

删除远程分支:$ git push origin --delete branch1

查看两个tag之间的所有commitID:$ git log tag1 tag2 --decorate=full

重命名远程:

先删除远程分支:git push --delete origin newEdition

重命名本地分支:git branch -m newEdition clean_edition
重新提交一个远程分支:git push origin clean_edition

git merge命令用于合并指定分支到当前分支

https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424

如何优雅的更新代码:自己基于master开发,master更新了,需要把master的更新merge到自己的分支:

1,先切分支到master并更新,git pull

2,切回自己的分支, git rebase master

----------------------------------------------------------------------------------------------

撤销修改:

未add的修改:git checkout -- README.md

add后未commit的修改:先git reset HEAD README.md再git checkout -- README.md

commit未push的修改:git reset --hard commit_id

git reset --hard HEAD^ (把git log最上面一条的内容扣除掉)

------------------------------------------------------------------------------------------------------

把一个分支分支的一部分代码提交到另外一个分支上

只合并某一次提交,而不是合并整个分支

git cherry-pick commit_id

(cherry picked from commit commit_id)

——---------------------------------------------------------------------

git show --color commit_id   //看这次提交更新了哪些代码

git log file/pathname //check changes in this file/path

git show --color commit_id file/pathname //check changes in this file/path by this commitid

-------------------------------------------------------------------------------------------------------------------

git status -uno  //不显示未跟踪文件

git diff --color

git checkout -f  //放弃本地修改,强制检出代码

git branch -d XXX  //删除分支

git checkout -b <branch> --track <remote>/<branch>

---------------------------------------------------------------------------------

修改author name

git config user.name 'username1'

git config user.email test1@qq.com

git commit --amend --reset-author

----------------------------------------------------------------------------------

git blame file 可以查看文件的具体部分是哪个patch进去的

--------------------------------------------------------------------------------

将本地恢复成clean状态

git rm --cached -r . && git reset --hard && git checkout . && git clean -df && git status

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值