Git的使用

1 篇文章 0 订阅

Ubuntu 下 sudo apt-get install git 即可完成安装。

官方文档!挺好

设置:

git config  --global user.name OOC  // 设置用户名

git config --global  user.email whatisooc@gmail.com   // 设置邮箱

git config --list  // 查看设置的信息

git config --global -e // 编辑所有设置

[alias]
    st = status   // git st # git status
    ck = checkout  // git ck # git checkout
Git通过git config命令来配置Git,这个命令有2个选项:

--system
--global

和默认选项,分别对应Git上3级配置文件。

  • 第一个是/etc/gitconfig文件,和–system对应,这是全局配置文件,修改这个文件,将会影响系统上所有的用户,所有的仓库。
  • 第二个是你家目录下的/.gitconfig文件,与–global对应,修改它会对你当前用户的所有仓库产生影响。
  • 第三个是你仓库中的.git/.gitconfig文件,这是“git config”默认修改的配置文件,它只会对你当前仓库产生影响。

初始化:

git init //新建文件夹,或在想建立仓库的文件夹下,初始化git。
// 相关文件均在 .git中。
git clone http://github.com/OOCZC/hello-world
git clone  git@github.com:OOCZC/hello-world  
// 使用这种方式SSH的clone,之后才能用SSH免密码push
// 克隆后本地master和远程master对应起来。
// 克隆github上的一个项目。建立在当前文件夹下。
// 克隆下来的代码即已经带.git文件,克隆之前不需要git init来初始化

Git 主要有三个概念

Modified(working directory):被修改过的文件

Staged(staging area):通过git add添加到暂存区域的文件

Committed(git directory):通过git commit提交到仓库的文件 

基本用法

git push  //将本地commit的代码更新到远程版本库中

git add filename1 filename2 //把filename1和filename2文件添加到暂存区
git add  "*.txt"   //不要忘记引号
git add -A //它会把当前目录下所有的文件都添加到暂存区域。

git commit // 把暂存区内的文件形成一个版本。
git commit -m 'xxx' //xxx为这个版本的说明
git commit -am 'xxx' // 对于已经跟踪的文件,可以直接提交,无需git add -A

git remote -v // 查看远程仓库的地址git status // 查看当前的状态
git remote rm origin //删除远程仓库origin地址
git remote add origin https://github.com/try-git/try_git.git  
//  添加远程仓库的地址,起名为origin
git remote add origin git@github.com:OOCZC/hello-world
// 添加远程仓库的地址,起名为origin,SSH免密码方式登录

git push -u origin master   
// 上传到远程仓库origin,master是本地主分支。  -u 为记住参数,下次直接git push 就好。
git push -f -u origin master   
// 强制push。本地版本落后远程仓库,强制使远程仓库回滚。

git pull origin develop-origin:develop-local  
// 把远程origin库的develop-origin分支的更新拉到本地develop-local分支
git pull origin develop-origin
// 把远程origin库的develop-origin分支的更新拉到本地当前分支
git pull origin master  // 从origin 库的master分支更新回本地当前分支
git pull origin  //  从origin 库的xx分支更新回本地当前的xx分支(和本地当前分支同名)
git pull --rebase  origin master // 从origin 库的master分支更新回本地当前分支,不增加很多commit记录

git diff //查看修改的内容。  ( 当前内容和暂存区或最近版本对比 )
git diff  --staged  // 和staged对比,显示区别
git diff HEAD // 和HEAD对比,显示区别

git reset octodog.txt // 把octodog.txt 移出 staged区。
git reset --hard 054rfd // 回滚到版本号为054rfd开头的版本。 也可以回滚到"未来"
git reset --hard HEAD //回滚到最近的版本。 HEAD^ 第二近的版本。 HEAD~10 表示有10个^,第十一个版本。
git reset –soft 0f11 // 版本回退,和--hard的区别为,这个不回退当前文件,只删除commit。 hard 回退所有文件。

git log //查看历史日志
git reflog // 查看所有历史及“未来“日志
git status // 查看当前工作空间的状态
//下面两条可以把暂存区的文件修改,彻底消除。
git reset HEAD file // 把暂存区file的修改撤销掉,重新放回工作区。
git checkout -f // 把file还原成暂存区或版本库。优先暂存区。 删除的文件也可找回。
git rm file // 提交删除file文件的记录。只rm,不git rm,commit后新版本也不知道rm了。
git rm --cached a.py //从暂存区移除a.py,不删除a.py本地文件

分支管理

git branch test  //创建一个test分支
git checkout test  //转到test分支
git checkout -b test  // 创建并切换到test分支
git branch  //查看分支列表

edit something...add something...commit something...

git checkout master //转到master分支
git merge test //合并test分支
git branch -D test //删除test分支
git branch -v // 查看本地分支
git branch -a //  查看远程分支
//git merge 默认是fast forward模式,即直接把master指向新的分支。这样就看不出合并的记录。

git merge --no-ff -m "xxx" dev // 不以ff模式融合dev分支,这样相当与新建一个commit,会保留分支合并的记录。

合并多个commit

commit 423u
   修改三
commit 8sff
   修改二
commit 67ty
   修改一
commit 23fs
   原始版本

比如这里想把修改一二三commit合并成一个修改。
git rebase -i 23fs
进入编辑页面,这里将想去除的commit的pick改成s,这里一定注意不能压缩67ty这个版本,
也就是编辑页面的第一个pick不能改成s,不然会崩!!(编辑页面和实际版本是倒序)
pick commit 67ty
s commit 8sff
s commit 423u
修改后 :wq
跳出信息修改页面,改成新的版本名即可。

远程分支

刚clone下来的库只有master分支:
git checkout -b dev  origin/dev     // 这里从远程仓库下载dev分支。
git push origin dev   // 推送dev分支至远程仓库

发生冲突

如果两个分支都修改过同一个文件,那就不能直接merge,需要手动解决冲突。

这里写图片描述

这里README.md 发生冲突,打开文件,修改成想要的形式。
然后

git add README.md  //  提交冲突文件
git commit -m "xxxx"  //  至此就merge成功了!可以查看分支合并图确定!
git log --graph  //显示分支合并图

暂时储存

git stash   // 暂时储存工作区,可以去其他分支工作了!
回来后。
git stash apply  //恢复工作区
git stash drop // 删除stash记录
或者用一条命令
git stash pop  //恢复工作区并删除
git stash list // 查看stash列表

附录:

md5sum命令,md5sum file   // 输出文件file的MD5校验码
md5sum file > file.md5  //把file文件的md5码写入到file.md5文件内。
md5sum  -c file.md5 
// 在当前文件夹下寻找file文件,并把file生成的md5与file.md5的内容对比,输出确定或错误。
> 和 >>都是标准输出。out > file,把前面的内容变成标准输出流,覆盖写入file文件。
>> file ,追加写入file文件。
< file , 把file当成标准输入流,读入,ACM时可把样例输入写入file文件来给程序读输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值