github提交代码
一、在linux下搭建git环境
1、创建Github账号,https://github.com
2、Linux创建SSH密钥:
- ssh-keygen ##一直默认就可以了
3、将公钥加入到Github账户信息Account Settings->SSH Key
4、测试验证是否成功。
- ssh -T git@github.com
- Hi someone! You've successfully authenticated, but GitHub does not provide shell access.
二、同步github到本地
1、复制项目到本地:
- git clone git://github.com:xxxx/test.git ##以gitreadonly方式克隆到本地,只可以读
- git clone git@github.com:xxx/test.git ##以SSH方式克隆到本地,可以读写
- git clone https://github.com/xxx/test.git ##以https方式克隆到本地,可以读写
- git fetch git@github.com:xxx/xxx.git ##获取到本地但不合并
- git pull git@github.com:xxx/xxx.git ##获取并合并内容到本地
查看远程所有分支 git branch -r
本地没有branchV*,拉取远端主干下的分支branchV*,并创建本地名为branchV*的分支
git checkout [本地master,即远端git主干地址别名]/branchV* -b branchV*
三、本地提交项目到github
1、本地配置
- git config --global user.name 'onovps'
- git config --global user.email 'onovps@onovps.com' #全局联系方式,可选
2、新建Git项目并提交到Github。
- mkdir testdir & cd testdir
- touch README.md
- git init #初始化一个本地库
- git add README.md #添加文件到本地仓库
- git rm README.md #本地倒库内删除
- git commit -m "first commit" #提交到本地库并备注,此时变更仍在本地。
- git commit -a ##自动更新变化的文件,a可以理解为auto
- git remote add xxx git@github.com:xxx/xxx.git #增加一个远程服务器的别名。
- git remote rm xxx ##删除远程版本库的别名
- git push -u remotename master #将本地文件提交到Github的remoname版本库中。此时才更新了本地变更到github服务上。 (-u的用法,加了参数-u后,以后即可直接用git push 代替git push origin master)
四、git 查看单独一个文件的修改历史
1. git log filename
可以看到fileName相关的commit记录
2. git log -p filenam
可以显示每次提交的diff
3. 只看某次提交中的某个文件变化,可以直接加上fileName
git show c5e69804bbd9725b5dece57f8cbece4a96b9f80b filename
在当前版本上的修改 添加到缓存区 : git stash save "修改了什么的注释"
列出缓存区内容:git stash list
在当前版本基础上合入缓存区代码:git stash pop
拉取主干及其分支的更新
git fetch proj_main
拉取分支的更新
git fetch proj_brantchV1
git
删除untracked文件
#删除untracked files
$ git clean -f
#连untracked的目录也一起删除
$git clean -fd
#连gitignore的untracked文件、目录也一起删掉(慎用,这个一般用来删掉编译出来的.o之类的文件用的)
$ git clean -xfd
#在上述的git clean前,建议加上-n参数来先看看会删掉哪些文件,防止重要文件被误删。
$ git clean -nf
$git clean -nfd
$ git clean -nxfd
完整版git学习推荐 :一起学习linux环境的git
Git撤销远端提交
用于远端提交message由错误内容或者错误提交代码,为了保证提交信息的简洁易懂,选择1)撤回远端内容从新提交(本地文件不变)。
git reset --soft HEAD~1 //或版本号
2)从新提交代码 commit
3)通过 git push origin master --force 强制提交当前版本号
git push --force origin 你的分支名
Git add . Git add * 的区别
Git 的add命令一般有三个参数 ., -u ,-A
-u 不包含新增
. 包含新增,修改(Git2.X 后包含删除)
-A 包含新增,修改,删除.
至于*, 解读它的是shell的语法,
git add 无法识别*, 但会接收shell通过*遍历而来的文件列表.
但shell中*本身不匹配.、..或.开头的文件
. 和*最大的区别在于:
* 不包含.开头的隐藏文件,且匹配不到已经删除的文件列表
. 匹配所有文件所有状态文件(在1.X版本不包括删除文件)
撤销已add的单个文件修改到modified
git reset 单个文件
撤销已commit的某个文件的修改
git log <filename>
git reset <commit-id> <filename>
再撤销对此文件的修改
git checkout <filename>
最后amend,再push
git commit --amend
git push origin <remoteBranch>