git提交问题:git提交时提示如下信息,没有将本地文件提交到服务器,是怎么回事
依次检查以下问题。(假定远端库叫 origin, 分支是 xxx)
push 之前,确保你已经和最新的远端分支做过merge/rebase,命令为 git fetch origin, 然后 git merge [或rebase] origin/xxx
你push的branch错了,比如本地的 dev 分支是track远端的 xxx 分支,但是你push的是yyy分支。确保你的push命令正确,如下 git push origin dev:xxx
确保你没有修改过已经在远端分支上的历史
1、本地公钥的获取,
cd ~/ssh
ls
使用指令ssh-keygen,生产公钥,第一个提示时输入文件(默认是id_rsa),第二个提示时输入的是密钥,
公钥放置在id_rsapub文件中。
2、按照code的提示,进行代码上传。
21 建立一个git文件件,比如git_csdn ,
22 git init,建仓操作,
23 可以新建一个readmemd, touch READMEmd
24 git add添加所有文件,git add file,添加file,比如git add README
25 git commit -m "first commit"
26 git remote add origin git @ url 地址
27 git push -u origin master
3、git clone 地址
4、git remote 不带参数,列出已经存在的远程分支
$ git remote
origin
5、配置:
$ git config --global username "John Doe"
$ git config --global useremail johndoe@examplecom
出现的问题:Updates were rejected because the tip of your current branch is behind
有如下几种解决方法:
1使用强制push的方法:
$ git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2push前先将远程repository修改pull下来
$ git pull origin master
$ git push -u origin master
3若不想merge远程和本地修改,可以先创建新的分支:
$ git branch [name]
然后push
$ git push -u origin [name]
分支管理:
1、创建分支: git branch new_branch
2、查看分支:git branch
3、删除分支:git branch -d new_branch
4、切换分支:git checkout new_branch
5、创建分支并切换分支: git checkout -b new_branch即可在本地新建分支,并使用该分支track远程分支
6、提交并推送分支:
git add
git commit -m "xxx"
git push -u origin new_branch
7、删除远程分支:git push origin --delete new_branch
8、合并分支: git merge new_branch
9、将本地更新上传到远程分支上:
例如本地新建或是更新了内容newfilec文件,
首先git add newfilec,
然后git commit -m "add new file",
紧接着git push 本地分支名 远程分支名即可将本地分支更新到远程分支。
10获取远程分支
git fetch 从远程获取其他用户push上来的新分支
git remote -v 即可查看远程所有的版本信息
这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的
大致分为下面2种情况:
1没有push
这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令
reset
git reset [--soft | --mixed | --hard
上面常见三种类型
--mixed
会保留源码,只是将git commit和index 信息回退到了某个版本
git reset 默认是 --mixed 模式
git reset --mixed 等价于 git reset
--soft
保留源码,只回退到commit 信息到某个版本不涉及index的回退,如果还需要提交,直接commit即可
--hard
源码也会回退到某个版本,commit和index 都回回退到某个版本(注意,这种方式是改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset --hard <commit> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突
所以,这种情况你要使用下面的方式
2已经push
对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致你要用到下面的命令
revert
git revert用于反转提交,执行evert命令时要求工作树必须是干净的
git revert用一个新提交来消除一个历史提交所做的任何修改
revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新(这里不会像reset造成冲突的问题)
revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
通常,前几位即可
git revert c011eb3
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
看似达到的效果是一样的,其实完全不同
第一:
上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突但是revert 并不会
第二:
如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里但是revert 方向提交的commit 并不会出现在历史分支里
第三:
reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的
首先确保你的本地git工作目录下已经增加了远程分支了使用 git remote -v 查看。如果没有则先使用 git remote add 命令添加一个(假设名为origin,分支为master)。如果已经有了,则使用 git push origin master命令提交当前工作目录下的分支到远程master分支
1、前期准备服务器上配置好的gitgit客户端11 在服务器上安装git (本机所使用的linux是ubuntu) 在服务器输入命令:sudo apt-get install git即可 然后创建名字为git的用户组和用户12 下载客户端 在浏览器地址栏输入:https://git-for-windowsgithubio/ 回车后 点击Download进行下载2、具体操作21 在合适的位置创建一个目录充当git远程仓库(本机位置为/usr/testgit),然后使用init命令初始化仓库 在命令终端输入: sudo git init –bare 22 将git init生成的目录所属者改为git 输入命令:sudo chown -R git:git 至此服务器端的操作完成。 在客户端合适位置使用git 客户端从服务器资源 23 首先打开git客户端 点击Git Bash Here 后出现 在git客户端命名终端输入: git clone git@xxxxxx:/rrrrr 其中xxxxxx是远程服务器的地址 rrrrr为git仓库所在位置 如果配置正确你选中的目录下会出现名字为testgit的文件夹 testgit文件夹下随意创建若干个文件 23 在git客户端上使用命令 git add 111txt 222txt 333txt 或者使用git add (将本文件夹下所有文件都add) 该命令的作用是告诉git把文件添加到git仓库24 然后使用git commit命令将文件提交到git仓库 -m 后面的内容为本次提交文件的一些注释内容 此时文件还没有从本地仓库上传到远程服务器仓库25 使用push命令将本地仓库中的内容提交到远程仓库 在git客户端命令终端输入:git push origin master 至此本地仓库中的文件上传已经上传到远程服务器仓库。 在其他文件夹下再次使用 git clone 命令 从远程服务器同步仓库
1
准备,下载git到你的电脑上,下载地址: http://git-scmcom/downloads
安装,直接下一步下一步就好,记得下载位置就好,配置的时候要用
2
在studio中设置git插件:File->Setting->Version Control->Git,添加您刚刚安装的git地址目录,例如: C:\Program Files\Git\bin\gitexe ,
然后可以点击Test测试一下,如下图:那么你就设置成功了。
3
初始化git项目(git init),操作如下:VCS->Enable Control Integration->Select "Git"
4
为git添加remote,在这一步中,studio没有为我们提供可视化的GUI,得用Git工具了。找到并打开git安装目录下面的Git Bash,将目录切换到项目的目录,然后输入git添加remote的命令,例如:git remote add origin "https://githubcom/xxx/xxxgit"
5
将代码添加到VCS(git add),选中要提交的文件->VCS->Git->Add,
6
提交变化(git commit),VCS->Commit Changes, 在提交的时候可以选择Commit and Push,就可以直接push到服务器。
7
Git Push,VCS->Git->Push
最后,如果要是clone project到studio
代码提交
代码提交一般有五个步骤:
1查看目前代码的修改状态
2查看代码修改内容
3暂存需要提交的文件
4提交已暂存的文件
5同步到服务器
1 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行git status命令
a) 已暂存 (changes to be committed)
new file //表示新建文件
modified //表示修改文件
deleted //表示删除文件
b) 已修改 (changed but not updated)
modified //表示修改文件
deleted //表示删除文件
另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --
c) 未跟踪 (untracked files)
2 查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用git diff –cached<file>
git diff <hashcode> <hashcode> <file>
比较某文件在提交节点a,节点b的差异。
技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)
3 暂存需要提交的文件
如果是新建的文件
则git add <file>
如果是修改的文件
则git add <file>
如果是删除的文件
则 git rm <file>
4 提交已暂存的文件
git commit
注意注释填写规范。
git commit --amend
修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。
5 同步到服务器
同步到服务器前先需要将服务器代码同步到本地
命令: git pull
如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。
命令:git checkout -- <有冲突的文件路径>
同步到服务器
命令: git push origin <本地分支名>
如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令。
0条评论